/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Clases;

import java.util.Date;

/**
 *
 * @author TVD
 */
public class Gestor {
    ListaCategoria listaCategoria;
    ListaResponsable listaResponsable;
    ListaTareas listaTareas;
    AccesoDatos ad;
    public Gestor()
    {
        ad = new AccesoDatos();
        listaCategoria = ad.getListaCategoria();
        listaResponsable = ad.getListaResponsable();
       
    }
    public ModeloTareas cargarTabla()
    {
        listaTareas = ad.getTareas(listaCategoria, listaResponsable);
        return new ModeloTareas(listaTareas.getListaTareas());   
    }
    public ModeloTareas cargarTabla(String titulo, int prioridad, int Responsable,int Categoria, Date fecha)
    {
        listaTareas = ad.getTareas(listaCategoria, listaResponsable, titulo, prioridad, Responsable, Categoria, fecha);
        return new ModeloTareas(listaTareas.getListaTareas());
    }
    public ModeloResponsables getResponsables()
    {
        return new ModeloResponsables(listaResponsable.getListaResponsable());   
    }
     public ModeloResponsables getResponsablesVisor()
    {
        return new ModeloResponsablesVisor(listaResponsable.getListaResponsable());   
    }
     public ModeloCategorias getCategorias()
    {
        return new ModeloCategorias(listaCategoria.getListaCategoria());   
    }
       public ModeloCategorias getCategoriasVisor()
    {
        return new ModeloCategoriasVisor(listaCategoria.getListaCategoria());   
    }
     public Date getDefaultDate()
     {
      Date d = new Date();
                long l  = d.getTime();
                l += 604800000;
                d.setTime(l);
                return d;
         
     }
     public boolean buscarResponsable(int id)
     {
        if(listaResponsable.buscar(id) ==  null) return false;
        else  return true;
     
     }
     public int proximoResponsable()
     {
       int id = listaResponsable.getUltimoId();
       if(id < 1)return -1;
       else return id;
     
     }
      public boolean buscarCategoria(int id)
     {
        if(listaCategoria.buscar(id) ==  null) return false;
        else  return true;
     
     }
     public int proximoCategoria()
     {
       int id = listaCategoria.getUltimoId();
       if(id < 1)return -1;
       else return id;
     
     }
     public int crearNuevoResponsable(int id, String nombre, String apodo, String email, String pathFoto)
     {
        int nuevoId=0;
         if(id >= 0)
         {
            Responsable rs=new Responsable(id,nombre, apodo,email,pathFoto);
            if(rs!=null)listaResponsable.agregar(rs);
            else return -1;
            nuevoId = ad.insert(rs);
         }
         return nuevoId;
     }
     
     public int crearNuevaCategoria(int id,String nombre, String descripcion)
     {
        int nuevoId=0;
         if(id >= 0)
         {
             Categoria cat=new Categoria(id,nombre,descripcion);
             if(cat!=null)listaCategoria.agregar(cat);
             else return -1;
             nuevoId = ad.insert(cat);
         }
         return nuevoId;
     } 
     
     public int crearNuevaTarea(String titulo, String texto, int prioridad, Date vencimiento, Responsable responsable,Categoria categoria, double Completado)
     {
         int id=0;
         id=ad.obtenerMayor("tarea");
         if(id!=0)
         {
             Tarea t=new Tarea(id,titulo,texto,prioridad,vencimiento,responsable,categoria,Completado);
             if(t!=null)listaTareas.agregar(t);
         }
         return id;
     }
     public int borrarResponsable(Responsable r)
     {
         if(!listaResponsable.borrar(r))return -1;
        int nuevoId =  ad.delete(r);
        return nuevoId;
        
     
     
     }
     public int borrarCategoria(Categoria c)
     {
     
     if(!listaCategoria.borrar(c))return -1;
        int nuevoId =  ad.delete(c);
        return nuevoId;
        
     }
     public boolean responsableTieneTareas(Responsable r)
     {
         return ad.responsableTieneTareas(r.getId());
     
     }
     public boolean categoriaTieneTareas(Categoria c)
     {
         return ad.categoriaTieneTareas(c.getId());
     
     }
     public int modificarResponsable(int id, String nombre, String apodo, String email, String pathFoto)
     {
       int nuevoId=0;
         if(id >= 0)
         {
            Responsable rs=new Responsable(id,nombre, apodo,email,pathFoto);
            if(rs!=null)
            {
                if(!listaResponsable.borrar((Responsable)listaResponsable.buscar(id)))return -1;
                listaResponsable.agregar(rs);
                
            }
            else return -1;
            ad.delete(rs);
            nuevoId = ad.insert(rs);
         }
         return nuevoId;
     
     }
     public int modificarCategoria(int id,String nombre, String descripcion)
     {
       int nuevoId=0;
         if(id >= 0)
         {
            Categoria cat = new Categoria(id,nombre,descripcion);
            if(cat!=null)
            {
                if(!listaCategoria.borrar((Categoria)listaCategoria.buscar(id)))return -1;                
                listaCategoria.agregar(cat);
                
            }
            else return -1;
            ad.delete(cat);
            nuevoId = ad.insert(cat);
         }
         return nuevoId;
     
     }
}
